﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using HA.Data;


using System.Windows.Controls;



namespace HA.ModFlow.Application
{
   public class DSGrid3dViewModel:MDTVIViewModel
    {

       public DSGrid3dViewModel(MDTVIViewModel parent, DSGrid3d ds):base(parent,false)
       {

           _dsGrid = ds;

           this._imageSource = VMImageSource.dataset;

           this._isShowCheck = false;

           this._contextMenu=new System.Windows.Controls.ContextMenu ();

           MenuItem mi = new MenuItem();

           mi.Command = Data2Commands.ViewDSValue;
           mi.CommandParameter = this._dsGrid;
           
           
           mi.Header = "查看值";


           this._contextMenu.Items.Add(mi);


            //删除：other的DSGrid3dCollecion中的DSGrid提供
           if (((DSGrid3dCollecionViewModel)parent).Collecion.Key.ToString().Trim() == "OtherDataSetResult")
           {

               Separator sepa = new Separator();
               this._contextMenu.Items.Add(sepa);



               mi = new MenuItem();

               mi.Command = Data2Commands.DeleteDSGrid3d ;
               mi.CommandParameter = this._dsGrid;
               
               mi.Header = "删除数据";

               this._contextMenu.Items.Add(mi);


           }



 
       }


       DSGrid3d _dsGrid;

       public DSGrid3d DsGrid
       {
           get { return _dsGrid; }
           set { _dsGrid = value; }
       }

       public override string Desc
       {
           get
           {
               return HAUtil.LanguageTranslater.ENToCN(this._dsGrid.Name);
           }
       }

       protected override void OnSelectedChanged()
       {

           if (this.IsSelected)
           {



               //。。。。。。。。。。。。小李。。。。。。。。。。。。。

               //该处的触发比较复杂 包括：顶部高程等项目设置    ModflowResult结果     MT3DMSResult结果等
               //结合主程序显示的DSGrid3d数据  有两种情况：1，从无到有；2，从一个到另一个

               //关键是从一个到另一个的数据更新

               if (ProjectService.DefaultService.Project.CurentFlowVectorData != null)
               {
                   if (((DSGrid3dCollecionViewModel)this.Parent).Collecion != null)
                   {
                       if (((DSGrid3dCollecionViewModel)this.Parent).Collecion.Key.ToString().Trim().Contains("ModflowResult"))
                       {
                           //包括两种情况：1，在同一个结果数据集中的两个DSGrid3d 之间相互点击；2，从一个MF结果的DSGrid3d到另一个MF结果的DSGrid3d

                           //更新向量
                           if (((DSGrid3dCollecionViewModel)this.Parent).Collecion.Collecion != null)
                           {

                               if (ProjectService.DefaultService.Project.CurrentDSGrid == null)
                               {
                                   //和向量比较是否删除向量

                                   bool isInTheSameDSGrid3dCollecion = false;

                                   if ((((DSModflow)(((DSGrid3dCollecionViewModel)this.Parent).Collecion))).VectorGridData != null)
                                   {
                                       foreach (CellCenterVector3dDS item in (((DSModflow)(((DSGrid3dCollecionViewModel)this.Parent).Collecion))).VectorGridData.Collecion)
                                       {
                                           if (item == ProjectService.DefaultService.Project.CurentFlowVectorData)
                                           {
                                               isInTheSameDSGrid3dCollecion = true;
                                               break;
                                           }
                                       }
                                   }
                                   if (isInTheSameDSGrid3dCollecion)
                                   {
                                       //当前主程序显示的DSGrid3d和新点击的在同一个DSGrid3dCollecion

                                   }
                                   else
                                   {
                                       //在不同的  ModflowResult  之间进行切换   暂时让向量不显示吧

                                       ProjectService.DefaultService.Project.CurentFlowVectorData = null;

                                   }

                               }
                               else
                               {
                                   //和主程序数据比较是否删除向量

                                   bool isInTheSameDSGrid3dCollecion = false;
                                   foreach (DSGrid3d item in ((DSGrid3dCollecionViewModel)this.Parent).Collecion.Collecion)
                                   {
                                       if (item == ProjectService.DefaultService.Project.CurrentDSGrid)
                                       {
                                           isInTheSameDSGrid3dCollecion = true;
                                           break;
                                       }
                                   }

                                   if (isInTheSameDSGrid3dCollecion)
                                   {
                                       //当前主程序显示的DSGrid3d和新点击的在同一个DSGrid3dCollecion

                                   }
                                   else
                                   {
                                       //在不同的  ModflowResult  之间进行切换   暂时让向量不显示吧

                                       ProjectService.DefaultService.Project.CurentFlowVectorData = null;

                                   }

                               }

                           }

                           //ProjectSerivce.DefaultService.Project.CurentFlowVectorData = null;

                       }
                       else
                       {
                           // 选择了MT3DMSResult 或者OtherDataSetResult 等等     向量不显示   
                           ProjectService.DefaultService.Project.CurentFlowVectorData = null;
                       }

                       //if (((DSGrid3dCollecionViewModel)this.Parent).Collecion.Key.ToString().Trim().Contains("MT3DMSResult"))
                       //{
                       //    // 选择了MT3DMSResult      向量不显示   
                       //    ProjectSerivce.DefaultService.Project.CurentFlowVectorData = null;
                       //}
                       //if (((DSGrid3dCollecionViewModel)this.Parent).Collecion.Key.ToString().Trim().Contains("OtherDataSetResult"))
                       //{                      
                       //    //选择了OtherDataSetResult     向量不显示
                       //    ProjectSerivce.DefaultService.Project.CurentFlowVectorData = null;                                
                       //}

                   }
               }

               //。。。。。。。。。。。。小李。。。。。。。。。。。。。

               //设置当前集合

               ProjectService.DefaultService.Project.CurrentDSGrid = this._dsGrid;



               //测试代码
               //ProjectSerivce.DefaultService.Project.DisplayOption.Grid3d.Contour.BuildContourlines();


               if (this._dsGrid.IsMultiDataset)
               {
                   UIModule.DefaultModule.ShowTimeStepView(true);



                   
               }
               else
               {

                   UIModule.DefaultModule.ShowTimeStepView(false);

               }


               UIModule.DefaultModule.ProjectViewModel.TsvViewModel.DsGrid = this._dsGrid;

               UIModule.DefaultModule.RibbonV2ViewModel.ViewOpViewModel.ToolVM.CurrentTool = APPTOOLMODE.GRID3D;


           }

           else
           {

               UIModule.DefaultModule.ShowTimeStepView(false);
 
           }
         
       }




    }
}
